package com.cici.spingcloud.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import com.cici.entities.Dept;
import com.cici.service.DeptClientService;

@RestController
public class DeptController_Consumer {
	
	/**
	 * 使用restTemplate模板访问微服务
	 */
	
	/*//private final String REST_URL_PREFIX = "http://localhost:8001";
	private final String REST_URL_PREFIX = "http://MICROSERVICECLOUD-DEPT1";  //这里也许就是provider端中application.yml中spring.application.name
	 *//**
	 * 使用restTemplate访问restful接口非常的简单粗暴无脑。
	 *	(url, requestMap, ResponseBean.class)这三个参数分别代表 
	 *	REST请求地址、请求参数、HTTP响应转换被转换成的对象类型
	 *//*
	@Autowired
	private RestTemplate restTemplate;

	@RequestMapping(value="/consumer/dept/add")
	public boolean add(Dept dept){
		return restTemplate.postForObject(REST_URL_PREFIX+"/dept/add", dept, Boolean.class);
	}

	@RequestMapping(value="/consumer/dept/get/{id}")
	public Dept get(@PathVariable("id") Long id){
		return restTemplate.getForObject(REST_URL_PREFIX+"/dept/get/"+id, Dept.class);
	}

	@SuppressWarnings("unchecked")
	@RequestMapping(value="/consumer/dept/list")
	public List<Dept> list(){
		return restTemplate.getForObject(REST_URL_PREFIX+"/dept/list", List.class);
	}  

	//测试@EnableDiscoveryClient,消费端可以调用服务发现
	@RequestMapping(value="/consumer/dept/discovery") 
	public Object discovery(){
		//访问provider中的discovery()方法      url
		return restTemplate.getForObject(REST_URL_PREFIX+"/dept/discovery", Object.class);
	}*/

	/**
	 * 调用公共api里面的service里面的方法
	 */
	@Autowired
	private DeptClientService service;


	@RequestMapping(value = "/consumer/dept/get/{id}")
	public Dept get(@PathVariable("id") Long id){
		return this.service.get(id);
	}

	@RequestMapping(value = "/consumer/dept/list")
	public List<Dept> list(){
		return this.service.list();
	}
	
	  @RequestMapping(value = "/consumer/dept/add")
	  public Object add(Dept dept){
	   return this.service.add(dept);
	  }
}
